﻿using System;
using FrameWork.Scripts.Suvivior;
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.UI;
using Object = UnityEngine.Object;

namespace UIForm
{
    [UIFormBase]
    public abstract class BaseUIForm : UIFormBase
    {
        // private Texture2D m_CaptureScreenTexture2D;
        // private Sprite m_CaptureScreenSprite;
        //
        // /// <summary>
        // /// 界面内是否启用后处理
        // /// </summary>
        // protected virtual bool EnableVolume => false;
        //
        // /// <summary>
        // /// 界面内启用模糊背景
        // /// </summary>
        // protected virtual bool EnableBlurBackground => true;
        //
        // /// <summary>
        // /// 界面是否启用刘海屏适配
        // /// </summary>
        // protected virtual bool EnableSafeAreaAdapt => false;
        //
        // /// <summary>
        // /// 上一次后处理状态
        // /// </summary>
        // protected bool m_LastVolumeStatus;
        //
        // public override void OnOpen(object userData)
        // {
        //     SetBackgroundRaycastTarget(true);
        //
        //     if (!EnableSafeAreaAdapt)
        //     {
        //         Transform.RectTransform().offsetMax = -ComponentConfig.GetComponentConfig<UIConfig>().Root.RectTransform().offsetMax;    
        //     }
        //
        //     if (EnableBlurBackground)
        //     {
        //         if(Camera.main != null)
        //         {
        //             AddBlurBackground();    
        //         }
        //         else
        //         {
        //             var blurBackground = GameObject.GetOrAddComponent<Image>();
        //             blurBackground.color = Color.black;
        //             blurBackground.enabled = true;
        //             blurBackground.SetAlpha(0);
        //             blurBackground.DOFade(1, 0.67777f);
        //         }
        //     }
        //
        //     if (!EnableVolume)
        //     {
        //         var camera = Camera.main;
        //         if (camera is { })
        //         {
        //             var component = camera.GetComponent<Volume>();
        //             if (component is { })
        //             {
        //                 m_LastVolumeStatus = component.enabled;
        //                 component.enabled = false;
        //             }
        //         }
        //     }
        //
        //     base.OnOpen(userData);
        // }
        //
        // public void AddBlurBackground()
        // {
        //     GameObject.SetActive(false);
        //     var blurBackground = GameObject.GetOrAddComponent<Image>();
        //     UniTask.Create((async () =>
        //     {
        //         m_CaptureScreenTexture2D = Main.CenterControl.CaptureScreen();
        //         m_CaptureScreenSprite = Sprite.Create(m_CaptureScreenTexture2D, new Rect(0, 0, m_CaptureScreenTexture2D.width, m_CaptureScreenTexture2D.height), Vector2.zero);
        //         blurBackground.sprite = m_CaptureScreenSprite;
        //         blurBackground.enabled = true;
        //         GameObject.GetOrAddComponent<UIEffect>();
        //         ProcessBackgroundImage();
        //     })).Forget();
        // }
        //
        // /// <summary>
        // /// 处理背景图片
        // /// </summary>
        // public virtual void ProcessBackgroundImage()
        // {
        //     var blurBackground = GameObject.GetComponent<Image>();
        //     blurBackground.SetAlpha(0);
        //     if (QualitySettings.GetQualityLevel() > 1)
        //     {
        //         var uiEffect = GameObject.GetComponent<UIEffect>();
        //         uiEffect.blurMode = BlurMode.MediumBlur;
        //         DOTween.To((value => uiEffect.blurFactor = value), 0, 1, 0.3f);
        //         blurBackground.DOColor(new Color(0.5f, 0.5f, 0.5f, 1), 0.67777f);    
        //     }
        //     else
        //     {
        //         //高帧率模式取消模糊效果，背景调整更黑
        //         blurBackground.DOColor(new Color(0.3f, 0.3f, 0.3f, 1), 0.67777f);    
        //     }
        // }
        //
        // /// <summary>
        // /// 设置背景射线阻挡
        // /// </summary>
        // /// <param name="enable">使能</param>
        // public void SetBackgroundRaycastTarget(bool enable)
        // {
        //     // var component = GameObject.GetComponent<Image>();
        //     // if (component != null)
        //     // {
        //     //     component.raycastTarget = enable;
        //     // }
        //     GameObject.GetOrAddComponent<CanvasGroup>().blocksRaycasts = enable;
        // }
        //
        // public virtual async UniTask Close()
        // {
        //     SetBackgroundRaycastTarget(false);
        //     if (EnableBlurBackground)
        //     {
        //         var blurBackground = GameObject.GetComponent<Image>();
        //         if (QualitySettings.GetQualityLevel() > 1)
        //         {
        //             blurBackground.DOColor(new Color(0, 0, 0, 0), 0.67777f);    
        //         }
        //         else
        //         {
        //             //高帧率模式取消模糊效果，背景调整更黑
        //             blurBackground.DOColor(new Color(0, 0, 0, 0), 0.67777f);    
        //         }
        //     }
        // }
        //
        // public override void OnClose(object userData, Action closeComplete)
        // {
        //     if (!EnableVolume)
        //     {
        //         var camera = Camera.main;
        //         if (camera is { })
        //         {
        //             var component = camera.GetComponent<Volume>();
        //             if (component is { })
        //             {
        //                 component.enabled = m_LastVolumeStatus;
        //             }
        //         }
        //     }
        //
        //     if (EnableBlurBackground)
        //     {
        //         if (m_CaptureScreenTexture2D != null)
        //         {
        //             Object.Destroy(m_CaptureScreenTexture2D);    
        //         }
        //
        //         if (m_CaptureScreenSprite != null)
        //         {
        //             Object.Destroy(m_CaptureScreenSprite);    
        //         }
        //     }
        //
        //     base.OnClose(userData, closeComplete);
        // }
        //
        // /// <summary>
        // /// 接收到WebView消息
        // /// </summary>
        // /// <param name="uniWebViewMessage">WebView消息</param>
        // public virtual void OnReceivedWebViewMessage(UniWebViewMessage uniWebViewMessage)
        // {
        //     
        // }
    }
}